// 应用程序的入口文件
const path = require('path')
const Cookies = require('cookies')
const express = require('express')
const mongoose = require('mongoose')
const bodyParser = require('body-parser')

// 创建http应用
let app = express()


// 配置中间件，解析post请求
app.use(bodyParser.urlencoded({ extended: true }))
app.use(bodyParser.json())
// 
// 配置模板引擎,定义模板引擎的后缀
app.engine('html', require('express-art-template'))
// 配置模板引擎默认目录, 第一个参数必须是views，第二个参数是目录
app.set('views', path.join(__dirname, './views/'))


// 配置中间件 Cookies 进行身份验证
app.use(function(req, res, next) {
	req.cookies = new Cookies(req, res)
	next()
})

// 允许跨域
app.all('*', function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
    res.header("X-Powered-By",' 3.2.1')
    res.header("Content-Type", "application/json;charset=utf-8");
    next();
});


// 设置静态文件托管, 当用户的url以plblic开头，则返回对应__dirname + '/plblic'下的文件
app.use('/public', express.static(path.join(__dirname, './public')))

// 分模块开发，将路由分出去，分成访问根目录和front模块和main模块
app.use('/admin', require('./routers/admin'))
app.use('/front', require('./routers/front'))
app.use('/', require('./routers/main'))

// Mongoose数据库的初始化
mongoose.connect('mongodb://localhost:27017/blog-admin')
// 监听数据库状态
let db = mongoose.connection
db.on('error', console.error.bind(console, '数据库连接失败'))
db.once('open', function () {
  console.log('数据库连接成功')
  app.listen(8081, function () {
    console.log('博客服务器启动完成,端口8081...')
  })
});
